рд╣рд░ рджрд┐рди, рджреБрдирд┐рдпрд╛ рднрд░ рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдореЗрд▓рд┐рдВрдЧ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреА рд╣реИрдВ - рдХреЗрд╡рд▓ рдореЗрд▓рдХрдореНрдкрд┐рди рд╕реЗрд╡рд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рддрд┐рджрд┐рди рдПрдХ рдмрд┐рд▓рд┐рдпрди рдкрддреНрд░ рднреЗрдЬрддреЗ рд╣реИрдВ ред рдЗрдирдореЗрдВ рд╕реЗ 20.81% рдЦреЛрдЬреЗ рдЬрд╛рддреЗ рд╣реИрдВред
рд╣рд░ рдорд╣реАрдиреЗ, рд╣рдорд╛рд░реА рд╕рд╛рдЗрдЯреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдВрдкрд╛рджрдХ рджреНрд╡рд╛рд░рд╛ рдЪрдпрдирд┐рдд рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рд╕рдорд╛рдЪрд╛рд░ рдкрддреНрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред рд▓рдЧрднрдЧ 21% рдкрд╛рдардХ рдЗрди рдкрддреНрд░реЛрдВ рдХреЛ рдЦреЛрд▓рддреЗ рд╣реИрдВред
рдЗрд╕ рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЙрдиреНрд╣реЗрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рддрд░реАрдХрд╛ рдПрдХ рд╕рд┐рдлрд╛рд░рд┐рд╢ рдкреНрд░рдгрд╛рд▓реА рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╣реИ рдЬреЛ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдкрд╛рдардХ рдХреЗ рд▓рд┐рдП рджрд┐рд▓рдЪрд╕реНрдк рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╕рдВрдХреЗрдд рджреЗрдЧрд╛ред
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ рдХрд┐ рд╕рд╣рдпреЛрдЧреА рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕реНрдХреНрд░реИрдЪ рд╕реЗ рдПрдХ рд╕рд┐рдлрд╛рд░рд┐рд╢ рдкреНрд░рдгрд╛рд▓реА рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХреА рдЬрд╛рдПред
рд▓реЗрдЦ рдХреЗ рдкрд╣рд▓реЗ рднрд╛рдЧ рдореЗрдВ рд╕рд┐рдлрд╛рд░рд┐рд╢ рдкреНрд░рдгрд╛рд▓реА рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рдЖрдзрд╛рд░ рд╢рд╛рдорд┐рд▓ рд╣реИред рд╕реНрдХреВрд▓ рдХреА рдЧрдгрд┐рдд рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред
рджреВрд╕рд░рд╛ рднрд╛рдЧ рд╣рдорд╛рд░реА рд╕рд╛рдЗрдЯ рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдкрд╛рдпрдерди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред
рд╕рд╣рдпреЛрдЧреА рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рд╕рд┐рджреНрдзрд╛рдВрдд рдХрд╛ рдПрдХ рд╕рд╛
рд╕рд╣рдпреЛрдЧреА рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдореЗрдВ рд╕рд╣рдпреЛрдЧрд╛рддреНрдордХ рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рд╢рд╛рдпрдж рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реИред рдпрд╣ рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ рдХрд┐ рд╕рдорд╛рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╕рдорд╛рди рд╡рд╕реНрддреБрдПрдВ рдкрд╕рдВрдж рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ рд▓реЗрдЦред
"рд╕рдорд╛рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ" рдХрд╛ рдХреНрдпрд╛ рдЕрд░реНрде рд╣реИ?

рдХреИрд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВ рдХрд┐ рд╡рд╛рд╕рд┐рд▓реА рдЗрд╡рд╛рди рдпрд╛ SQL рд╕рд░реНрд╡рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ PostgreSQL рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП рдХрд┐рддрдирд╛ рдкрд╕рдВрдж рд╣реИ?
рдЖрдЗрдП рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдорд╛рд░реЗ рдЪрд╛рд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣реИрдВ: рд╡рд╛рд╕рд┐рд▓реА, рдЗрд╡рд╛рди, рдЗрдиреНрдирд╛ рдФрд░ рдЕрдиреНрдирд╛ред рд╕рд╛рдЗрдЯ рдореЗрдВ рдкрд╛рдВрдЪ рд▓реЗрдЦ рд╣реИрдВ: рдЕрдиреБрдЪреНрдЫреЗрдж 1, рдЕрдиреБрдЪреНрдЫреЗрдж 2, рдЕрдиреБрдЪреНрдЫреЗрдж 3, рдЕрдиреБрдЪреНрдЫреЗрдж 4 рдФрд░ рдЕрдиреБрдЪреНрдЫреЗрдж 5ред рдиреАрдЪреЗ рджреА рдЧрдИ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдФрд░ рд▓реЗрдЦ рдХреЗ рдЪреМрд░рд╛рд╣реЗ рдкрд░ рд╕рдВрдЦреНрдпрд╛ рдкрд╛рдВрдЪ-рдмрд┐рдВрджреБ рдкреИрдорд╛рдиреЗ рдкрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рд░реЗрдЯрд┐рдВрдЧ рд╣реИред рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╢реВрдиреНрдп рдРрд╕реЗ рд▓реЗрдЦ рд╣реИрдВ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рд░реЗрдЯ рдирд╣реАрдВ рдХрд┐рдП рдЧрдП рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡рд╕реАрд▓реА рдХреЛ рд▓реЗрдЦ 1, 3 рдФрд░ 4 рдкрд╕рдВрдж рд╣реИрдВред
рддрд╛рд▓рд┐рдХрд╛ 1
рд╕рд╣рдЬ рд░реВрдк рд╕реЗ, рд╣рдо рдпрд╣ рдорд╛рди рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдорд╛рди рд▓реЗрдЦ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЙрдирдХрд╛ рд╕реНрд╡рд╛рдж рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред рдЖрдк рдХреНрдпрд╛ рд╕реЛрдЪрддреЗ рд╣реИрдВ, рдХрд┐рд╕рдХреЗ рд╣рд┐рдд рд╡реИрд╕рд┐рд▓реА рдХреЗ рд╣рд┐рддреЛрдВ рдХреЗ рд╕рдорд╛рди рд╣реИрдВ?
рд╡рд╛рд╕рд┐рд▓реА рдХреЗ рд╣рд┐рдд рдЗрд╡рд╛рди рдФрд░ рдЗрдиреНрдирд╛ рдХреЗ рд╣рд┐рддреЛрдВ рдХреЗ рд╕рдорд╛рди рд╣реИрдВ рдФрд░ рдЕрдиреНрдирд╛ рдХреЗ рд╣рд┐рддреЛрдВ рдХреА рддрд░рд╣ рдХрдо рд╣реИрдВред рдХреНрдпреЛрдВ - рдпрд╣ рдЖрдЧреЗ рдмрддрд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЖрдЧреЗ рдХреЗ рдХрд╛рдо рдХреЗ рд▓рд┐рдП, рд╡реИрд╕рд┐рд▓реА рдФрд░ рдЗрд╡рд╛рди рдпрд╛ рдЗрдиреНрдирд╛ рдФрд░ рдЕрдиреНрдирд╛ рдХреА "рд╕рдорд╛рдирддрд╛" рдХреЛ рдФрдкрдЪрд╛рд░рд┐рдХ рд░реВрдк рджреЗрдирд╛ рдФрд░ рдорд╛рдкрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред
рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд░реЗрдЯрд┐рдВрдЧ рдХреЛ рдЙрдирдХреА рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛ рд╡рд░реНрдгрди рд╣реИред рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ - рддреБрд▓рд╕реА рдХрд╛ рд╡рд░реНрдгрди - рдкрд╛рдБрдЪ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХрд╛ рдПрдХ рд╕рджрд┐рд╢ рд╣реИ: [рек, реж, рел, рел, реж]; рджреВрд╕рд░рд╛ - рдЗрд╡рд╛рди - [0, 0, 4, 5, 0]; рддреАрд╕рд░рд╛ рдЗрдирд╛ рд╣реИ - [4, 2, 4, 0, 0]; рдЪреМрдерд╛ рд╣реИ рдЕрдиреНрдирд╛ - [рел, рел, реж, реж, рел]ред
рдЕрдм рдЖрдк "рд╕рдорд╛рдирддрд╛ рдХреЗ рдорд╛рдк" рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╡рд┐рд╡рд░рдг рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЛ рдкреЗрд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА "рд╕рдорд╛рдирддрд╛" рдХреЛ рдорд╛рдкрдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╡реИрдХреНрдЯрд░реЛрдВ рдХреЗ рдмреАрдЪ рдХреЙрд╢рди рджреВрд░реА рдХреА рдЧрдгрдирд╛ рдХрд░рдирд╛ рд╣реИ рдЬреЛ рдЙрдирдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВред

рдмреНрд░рд╣реНрдорд╛рдВрдбреАрдп рджреВрд░реА рдХреА рдЧрдгрдирд╛ рд╕реВрддреНрд░ рджреНрд╡рд╛рд░рд╛ рдХреА рдЬрд╛рддреА рд╣реИ:
рдЬрд╣рд╛рдБ рдФрд░ - рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╡рд┐рд╡рд░рдг рд╡реИрдХреНрдЯрд░; - рд╡рд┐рд╡рд░рдг рд╡реИрдХреНрдЯрд░ рдХреЗ рд╕реНрдХреЗрд▓рд░ рдЙрддреНрдкрд╛рдж; ред - рд╡рд┐рд╡рд░рдг рд╡реИрдХреНрдЯрд░ рдХреА рд▓рдВрдмрд╛рдИред
рдХреЛрд╕рд╛рдЗрди рджреВрд░реА рдХрд╛ рдЕрд░реНрде рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ: рдпрджрд┐ рджреЛ рд╡реИрдХреНрдЯрд░ рдЬрд╣рд╛рдВ рдФрд░ (рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╡рд┐рд╡рд░рдг рд╡реИрдХреНрдЯрд░) "рд╕рдорд╛рди" рд╣реИрдВ, рддреЛ рдЙрдирдХреЗ рдмреАрдЪ рдХрд╛ рдХреЛрдг рд╢реВрдиреНрдп рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдЗрд╕ рдХреЛрдг рдХреЗ рдХреЛрд╕рд╛рдЗрди рдореЗрдВ рдПрдХрддрд╛ рд╣реЛ рдЬрд╛рдПрдЧреАред рдЖрджрд░реНрд╢ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЬрдм рджреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ "рд╣рд┐рдд" рдореЗрд▓ рдЦрд╛рддреЗ рд╣реИрдВ, рддреЛ рдЙрдирдХреЗ рд▓рд┐рдП рдХреЙрд╢рди рдХреА рджреВрд░реА рд╢реВрдиреНрдп рд╣реЛрдЧреАред
рд╡рд╛рд╕рд┐рд▓реА рдФрд░ рдЗрд╡рд╛рди рдХреЗ рдмреАрдЪ рдХреЛрд╕рд╛рдЗрди рджреВрд░реА:
рдЗрд╕реА рддрд░рд╣, рд╡реИрд╕рд┐рд▓реА рдФрд░ рдЕрдиреНрдирд╛ рдХреЗ рдмреАрдЪ рдХреЛрд╕рд╛рдЗрди рджреВрд░реА 0.715 рд╣реИред рдпрд╛рдиреА, рд╡рд╛рд╕рд┐рд▓реА рдХреЗ рд╣рд┐рдд рдЗрд╡рд╛рди рдХреЗ рд╣рд┐рддреЛрдВ рдХреА рддрд░рд╣ рдЕрдиреНрдирд╛ рдХреЗ рд╣рд┐рддреЛрдВ рд╕реЗ рдЕрдзрд┐рдХ рд╣реИрдВред
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд░реЗрдЯрд┐рдВрдЧ рдХреА рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХреИрд╕реЗ рдХрд░реЗрдВ?
рдпрд╣ рд╣рд┐рд╕реНрд╕рд╛ рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИред рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВред рдиреАрдЪреЗ рд╣рдо рджреЛ рд╕рд░рд▓ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред
рдЕрдиреБрдорд╛рдирд┐рдд рд░реЗрдЯрд┐рдВрдЧ - "рд╕рдорд╛рди" рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдмреАрдЪ рдФрд╕рдд рд░реЗрдЯрд┐рдВрдЧ
рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХреА рдЧрдИ рд░реЗрдЯрд┐рдВрдЧ рдХреА рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рд╡рд┐рдХрд▓реНрдк рдпрд╣ рджреЗрдЦрдирд╛ рд╣реИ рдХрд┐ "рд╕рдорд╛рди" рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдХреМрди рд╕реА рд░реЗрдЯрд┐рдВрдЧреНрд╕ рд▓реЗрдЦ рдореЗрдВ рдбрд╛рд▓рддреЗ рд╣реИрдВ рдФрд░ рдФрд╕рдд рд░реЗрдЯрд┐рдВрдЧ рд▓реЗрддреЗ рд╣реИрдВ:
рдЗрд╕ рд╕реВрддреНрд░ рдореЗрдВ:
- рдЕрдиреБрдорд╛рди рд╣реИ рдХрд┐ рдХреЗ рд▓рд┐рдП рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХреА рд╣реИ рд╡реЗрдВ рд▓реЗрдЦ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ ред
- - рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд░реЗрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╡реЗрдВ рд▓реЗрдЦ
- - "рд╕рдорд╛рди" рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ,
- - "рд╕рдорд╛рди" рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ред
рдЕрдиреБрдорд╛рдирд┐рдд рд░реЗрдЯрд┐рдВрдЧ - "рд╕рдорд╛рди" рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдмреАрдЪ рдФрд╕рдд рд░реЗрдЯрд┐рдВрдЧ
рдереЛрдбрд╝рд╛ рдФрд░ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╡рд┐рдХрд▓реНрдк рд╕рдорд╛рдирддрд╛ рдХреА рдбрд┐рдЧреНрд░реА рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдирд╛ рд╣реИ: рдЕрдзрд┐рдХ рд╕рдорд╛рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рд░реЗрдЯрд┐рдВрдЧ рдХреЛ рдЕрдВрддрд┐рдо рд░реЗрдЯрд┐рдВрдЧ рдХреЛ рдХрдо рд╕рдорд╛рди рд▓реЛрдЧреЛрдВ рдХреА рд░реЗрдЯрд┐рдВрдЧ рд╕реЗ рдЕрдзрд┐рдХ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:
рдЗрд╕ рд╕реВрддреНрд░ рдореЗрдВ:
- рдЕрдиреБрдорд╛рди рд╣реИ рдХрд┐ рдХреЗ рд▓рд┐рдП рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХреА рд╣реИ рд╡реЗрдВ рд▓реЗрдЦ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ ред
- - рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд░реЗрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╡реЗрдВ рд▓реЗрдЦ
- - "рд╕рдорд╛рди" рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ,
- - рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА (рд╕рдорд╛рдирддрд╛) (рдХреЛрдЬреНрдпрд╛ рджреВрд░реА) рдФрд░ ред
рд╕рд┐рдлрд╛рд░рд┐рд╢реЛрдВ рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдХреИрд╕реЗ рдорд╛рдкреЗрдВ?

рдХрд┐рд╕реА рднреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рдЙрд╕ рдореАрдЯреНрд░рд┐рдХ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдЖрдк рд╣рдорд╛рд░реЗ рдореЙрдбрд▓ рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдХрд┐рддрдиреА рдЕрдЪреНрдЫреА рд╕рд╛рдордЧреНрд░реА рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд░реВрдЯ рдорд╛рдзреНрдп рд╡рд░реНрдЧ рддреНрд░реБрдЯрд┐ ( ) рд╕рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд░реЗрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдФрд╕рдд рддреНрд░реБрдЯрд┐ рдХрд╛ рд╡рд░реНрдЧрдореВрд▓ рд╣реИред рдФрдкрдЪрд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ, рдпрд╣ рдЙрдкрд╛рдп рд╕реВрддреНрд░ рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рд╣реИ:
рдЗрд╕ рд╕реВрддреНрд░ рдореЗрдВ
- - рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рд▓реЗрдЦреЛрдВ рдХреЗ рд╕рднреА рд░реЗрдЯрд┐рдВрдЧ рдХрд╛ рд╕реЗрдЯ,
- - рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд░реЗрдЯрд┐рдВрдЧ рдХреА рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХреА рд▓реЗрдЦ ред
- - рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд░реЗрдЯрд┐рдВрдЧ рд▓реЗрдЦ ред
рдЖрджрд░реНрд╢ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЬрдм рдЕрдиреБрдорд╛рдирд┐рдд рд░реЗрдЯрд┐рдВрдЧ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рде рдореЗрд▓ рдЦрд╛рддреА рд╣реИ рд╢реВрдиреНрдп рдХреЗ рдмрд░рд╛рдмрд░ред
рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рджреЛ рд╕рдВрджрд░реНрдн рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдиреЗ рд╡рд╕реАрд▓реА рдХреЗ рд▓рд┐рдП рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгрд┐рдпрд╛рдВ рдХреАрдВред рдкрд░рд┐рдгрд╛рдо рдиреАрдЪреЗ рджреА рдЧрдИ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╣реИред
рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рджреВрд╕рд░реА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдкреНрд░рдгрд╛рд▓реА рдиреЗ рдкрд╣рд▓реЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмреЗрд╣рддрд░ рд░реЗрдЯрд┐рдВрдЧ рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдпрд╛ рдерд╛ред рдЧрд┐рдирддреА :
рджреВрд╕рд░реА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдкреНрд░рдгрд╛рд▓реА рдХреЗ рдореВрд▓реНрдпрд╛рдВрдХрди рдХреЗ рд▓рд┐рдП рддреНрд░реБрдЯрд┐ рдХрд╛рдлреА рдХрдо рд╣реЛрдиреЗ рдХреА рдЙрдореНрдореАрдж рд╣реИред
рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрдкрдиреЗ рдирд┐рдкрдЯрд╛рди рдореЗрдВ рд▓реЗрдЦ рдФрд░ рд╕рд╛рдЗрдЯ рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдбреЗрдЯрд╛ рд╣реИрдВ: рд▓реЗрдЦ, рдЯреИрдЧ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдкрд╕рдВрдж, рдЖрджрд┐ рдХреА рдЬрд╛рдирдХрд╛рд░реАред
рд╕рд╣рдпреЛрдЧреА рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд░реЗрдЯрд┐рдВрдЧ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИрдВред
рддреНрдпрд╛рдЧрдЗрд╕рдХреЗ рдмрд╛рдж, рд╕рд┐рдлрд╛рд░рд┐рд╢ рдкреНрд░рдгрд╛рд▓реА рдХреЗ рддрд░реНрдХ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб "рдорд╛рдереЗ рдореЗрдВ" рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬреАрд╡рди рдореЗрдВ, numpy
рдФрд░ pandas
рдХреА рд╕рднреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред
import pandas as pd import numpy as np import os ratings_df = pd.read_csv('./input/Ratings.csv') print(' :', ratings_df.shape[0]) print(' :', ratings_df[ratings_df['Rate']].shape[0]) unique_user_ids = ratings_df[ratings_df['Rate']]['UserId'].unique() print(' :', len(unique_user_ids)) ratings_df.head()
рдЖрдЙрдЯрдкреБрдЯ [1]рдХреБрд▓ рдбреЗрдЯрд╛: 15313
рд╕рдХрд╛рд░рд╛рддреНрдордХ рд░реЗрдЯрд┐рдВрдЧ: 15121
рд╕рдХреНрд░рд┐рдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛: 1007
1007 рд╕рдХреНрд░рд┐рдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдиреЗ 15313 "рд░реЗрдЯрд┐рдВрдЧ" рджреАред рдЗрдирдореЗрдВ рд╕реЗ, 15121 "рдкрд╕рдВрдж"ред
рдбреЗрдЯрд╛ рдореЗрдВ рдЪрд╛рд░ рдХреЙрд▓рдо рд╣реЛрддреЗ рд╣реИрдВ: рдбреЗрдЯрд╛рдмреЗрд╕ ( рдЖрдЗрдбреА рдХреЙрд▓рдо) рд╕реЗ рдПрдХ рдкрдВрдХреНрддрд┐ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛, рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ ( рдбреЙрдХреНрдпреВрдореЗрдВрдЯрдЖрдИрдб рдХреЙрд▓рдо), рдПрдХ рд╕рдВрдХреЗрдд рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд▓реЗрдЦ ( рд░реЗрдЯ рдХреЙрд▓рдо), рдФрд░ рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ ( UserId рдХреЙрд▓рдо) рдкрд╕рдВрдж рдЖрдпрд╛ред
рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рдХреЙрд▓рдо рджрд░ рдЬреЛрдбрд╝реЗрдВред рдЗрд╕ рдХреЙрд▓рдо рдореЗрдВ 1 рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд▓реЗрдЦ рдкрд╕рдВрдж рдЖрдпрд╛; -1 - рдЬреЛ рдкрд╕рдВрдж рдирд╣реАрдВ рдЖрдпрд╛ред
ratings_df['RateInt'] = ratings_df['Rate'].apply(lambda x: 1 if x else -1) ratings_df.head()
рдЖрдЧреЗ рдХреЗ рдХрд╛рдо рдХреЗ рд▓рд┐рдП, рдбреЗрдЯрд╛ рд╕реЗрдЯ рдХреЛ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдФрд░ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ: рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдореЙрдбрд▓ рдХреЛ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдкрд░реАрдХреНрд╖рдг рдПрдХ рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгрд┐рдпреЛрдВ рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдЧрд╛ред
from sklearn.model_selection import train_test_split train, test = train_test_split(ratings_df, test_size=0.2)
рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рд╕реЗрдЯ рдХреЛ рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдмрджрд▓рддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдБ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рдХреЙрд▓рдо рдореЗрдВ рд▓реЗрдЦ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рд╕рд╛рджреГрд╢реНрдп рджреНрд╡рд╛рд░рд╛ рд▓реЗрдЦреЛрдВ рдХреЗ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╣реЛрддреЗ рд╣реИрдВред
def create_matrix(df): ratings_per_user = [] post_ids = df['DocumentId'].unique() for user_id in tqdm_notebook(all_users_ids, ''): row = {'user_id': user_id} ratings = df[df['UserId'] == user_id]['DocumentId'].values for post_id in post_ids: row[str(post_id)] = 1 if post_id in ratings else 0 ratings_per_user.append(row) return pd.DataFrame(ratings_per_user) train_df = create_matrix(train) test_df = create_matrix(test)
рдореИрдЯреНрд░рд┐рдХреНрд╕ рдорд┐рд▓рд╛рди рд╡рд╛рд▓реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдФрд░ рдкрд╕рдВрджреАрджрд╛ рд▓реЗрдЦ рдЖрдкрдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдмреАрдЪ рдХреЙрд╢рди рдХреА рджреВрд░реА рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВрдЧреЗ:
from scipy import spatial def cos_distance(x1, x2): return spatial.distance.cosine(x1, x2) at_least_one_fav_post_users = list(train_valuable_df['user_id'].values) def calculate_distances(df): columns = df.columns[:-1] cp = at_least_one_fav_post_users.copy() data = [] for user_id_1 in tqdm_notebook(at_least_one_fav_post_users, ''): row = {'user_id': user_id_1} for user_id_2 in cp: x1 = df[df['user_id'] == user_id_1][columns].values[0] x2 = df[df['user_id'] == user_id_2][columns].values[0] row[str(user_id_2)] = cos_distance(x1, x2) data.append(row) return pd.DataFrame(data) train_distances = calculate_distances(train_valuable_df)
рдЕрдм рд╕рдм рдХреБрдЫ рддреИрдпрд╛рд░ рд╣реИ рддрд╛рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЙрди рд▓реЗрдЦреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдпрд╛ рдЬрд╛ рд╕рдХреЗ рдЬреЛ рд╡реЗ рд╣рдорд╛рд░реА рд░рд╛рдп рдореЗрдВ рдкрд╕рдВрдж рдХрд░реЗрдВрдЧреЗред
рд╣рдо рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рд╕рд┐рдлрд╛рд░рд┐рд╢реЛрдВ рдХреА рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рджреЛ рд░рдгрдиреАрддрд┐рдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ: рд╕рдорд╛рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдмреАрдЪ рдФрд╕рдд рдФрд░ рднрд╛рд░рд┐рдд рдФрд╕рдд рд░реЗрдЯрд┐рдВрдЧред
рдкрд╣рд▓рд╛ рддрд░реАрдХрд╛
рд╣рдо рд╡рд░реНрддрдорд╛рди рдХреЗ рд╕рдмрд╕реЗ рдХрд░реАрдм 10 рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдФрд╕рдд рдХреЗ рд░реВрдк рдореЗрдВ рд░реЗрдЯрд┐рдВрдЧ рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рддреЗ рд╣реИрдВ:
from tqdm import tqdm_notebook import heapq def rmse(predicted, actual): return ((predicted - actual) ** 2).mean() ** 0.5 def get_similar(id, n): df = train_distances[train_distances['user_id'] == id] d = df.to_dict('records')[0] top_similar_ids = heapq.nsmallest(n+1, d, key=d.get) top_similar = df[top_similar_ids] return top_similar.to_dict('records')[0] def get_predictions(id, n): top_similar_users = get_similar(id, n) top_similar_users_ids = list([int(x) for x in top_similar_users.keys()]) ratings_for_top_similar = train_df[train_df['user_id'].isin(top_similar_users_ids)] predicted_ratings = {} for article_id in train_df.columns[:-1]: predicted_ratings[article_id] = ratings_for_top_similar[article_id].mean() return predicted_ratings rand_n_users = train_distances.sample(50)['user_id'].values err = 0 for u in tqdm_notebook(rand_n_users): pred = get_predictions(u, 10) err += rmse(test_df[test_df['user_id'] == u][list(pred.keys())].values, pd.DataFrame(pred, index=[0]).values) print(err / len(rand_n_users))
рдкрд╣рд▓реЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ 0.855 рдХреЗ рдмрд░рд╛рдмрд░ рддреНрд░реБрдЯрд┐ рдорд┐рд▓реАред
рдЖрдХрд╕реНрдорд┐рдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рд╕рд┐рдлрд╛рд░рд┐рд╢реЗрдВ рджреВрд╕рд░рд╛ рддрд░реАрдХрд╛
рджреВрд╕рд░реА рд╡рд┐рдзрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рд╕рдорд╛рдирддрд╛ рдХреА рдбрд┐рдЧреНрд░реА рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреА рд╣реИред рдЗрд╕рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд╣рд▓реЗ рдХреЗ рд╕рдорд╛рди рд╣реИ:
def get_predictions(id, n): similar_users = get_similar(u, 10) prediction = {} user_ids = list(similar_users.keys()) user_similarities = [] for user_id in user_ids: user_similarities.append(similar_users[user_id]) predicted_ratings = {} for article_id in train_df.columns[:-1]: prediction_for_article = 0 numerator = 0 denominator = 0 for user_id in user_ids: rating = train_df[train_df['user_id'] == int(user_id)][article_id].values[0] numerator += rating * (1 - similar_users[user_id]) denominator += np.abs(similar_users[user_id]) predicted_ratings[article_id] = numerator / denominator return predicted_ratings err = 0 for u in tqdm_notebook(rand_n_users): pred = get_predictions(u, 10) err += rmse(test_df[test_df['user_id'] == u][list(pred.keys())].values, pd.DataFrame(pred, index=[0]).values) print(err / len(rand_n_users))
рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЙрдиреНрд╣реЗрдВ 0.866 рддреНрд░реБрдЯрд┐ рдорд┐рд▓реАред рдкрд╣рд▓реЗ рдорд╛рдорд▓реЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рддреНрд░реБрдЯрд┐ рдереЛрдбрд╝реА рдмрдбрд╝реА рд╣реИред
рдПрдХ рд╣реА рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рд╕рд┐рдлрд╛рд░рд┐рд╢реЗрдВ рдкрд░рд┐рдгрд╛рдо рд╡рд┐рднрд┐рдиреНрди рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреНрд░рддрд┐ рдорд╛рд╣ рдирдП рд▓реЗрдЦреЛрдВ рдХреЗ рд╕рдорд╛рдЪрд╛рд░рдкрддреНрд░рд┐рдХрд╛рдПрдБ рдпрд╛ рд╕рд╛рдЗрдЯ рдкрд░ "рдЖрдк рд░реБрдЪрд┐ рд╣реЛ рд╕рдХрддреА рд╣реИред"
рд╕рд╛рд░рд╛рдВрд╢
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВрдиреЗ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХрд╛рд░реНрдп рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЬрд╛рдирдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдХрд┐ рдХреИрд╕реЗ рд╕рд╣рдпреЛрдЧ рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рд╕рд┐рдлрд╛рд░рд┐рд╢ рдкреНрд░рдгрд╛рд▓реА рдмрдирд╛рдИ рдЬрд╛рдПред
рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рд▓рд╛рдн рдЗрд╕рдХреА рдмрд╣реБрдореБрдЦреА рдкреНрд░рддрд┐рднрд╛ рд╣реИ - рд╕рд┐рдлрд╛рд░рд┐рд╢реЗрдВ рдзреНрдпрд╛рди рдореЗрдВ рдирд╣реАрдВ рд░рдЦрддреА рд╣реИрдВ рдХрд┐ рдХрд┐рди рд╡рд╕реНрддреБрдУрдВ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА рдЬрд╛рддреА рд╣реИред рдСрдирд▓рд╛рдЗрди рд╕реНрдЯреЛрд░ рдореЗрдВ рдмреНрд▓реЙрдЧ рд╕рд┐рд╕реНрдЯрдо рдФрд░ рдЙрддреНрдкрд╛рджреЛрдВ рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдиреБрдХрд╕рд╛рди рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:
- рдЕрдиреБрд╢рдВрд╕рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдСрдмреНрдЬреЗрдХреНрдЯ рдореИрдЯреНрд░рд┐рдХреНрд╕ рд╡рд┐рд░рд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рд╕рдорд╛рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ (рдХрдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдСрдмреНрдЬреЗрдХреНрдЯ рдЬреЛрдбрд╝реЗ рдорд┐рд▓рд╛рди) рдЦреЛрдЬрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ
- рдХреЛрд▓реНрдб рд╕реНрдЯрд╛рд░реНрдЯ рдХреА рд╕рдорд╕реНрдпрд╛ - рдирдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЦреЛрдЬрдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ (рдЗрд╕ рд╕реАрдорд╛ рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд░рдиреЗ рдХреА рд░рдгрдиреАрддрд┐ рд╣реИ, рд▓реЗрдХрд┐рди рд╡реЗ рд░рд╛рдордмрд╛рдг рдирд╣реАрдВ рд╣реИрдВ)
- рд╕рд╣рдпреЛрдЧреА рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдПрдХ рдкреНрд░рдгрд╛рд▓реА рд▓реЛрдХрдкреНрд░рд┐рдп рд╡рд╕реНрддреБрдУрдВ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд╡рд┐рд╢рд╛рд▓ рдмрд╣реБрдордд рдРрд╕реА рд╡рд╕реНрддреБрдУрдВ рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░реЗрдВрдЧреЗред
рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдореЗрдВ, рдПрдХ рдФрд░ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ - рдЦреБрдж рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рдЖрдзрд╛рд░ рдкрд░ред